<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            call()和apply()
            -这两个方法都是函数对象的方法，需要通过函数对象来调用
            -当对函数调用 call()和apply()都会调用函数执行
            -在调用call和apply()时可以将一个对象指定为第一个参数
            此时这个对象会称为函数执行时的this
            -call()方法可以将实参在对象之后依次传递


            -this的情况
            1.以函数的形式调用时，this 永远都是window
            2.以方法的形式调用时，this是调用方法 的对象
            3.以构造哈桑农户的形式调用时，this是新创建的那个对象
            4.使用call和apply调用时，this是指定的那个对象
        */
       function fun(a,b){
           alert(this.name);
           console.log("a="+a);
           console.log("b="+b);
       }
       var obj={
           name:"obj",
           sayName:function (){
             
               alert(this.name);
           }
    };
       var obj2={name:"obj2"};
    //    fun();这种方式指定的window
    //    fun.apply();这种方式指定是谁就是谁
    //    fun.call();
    //    fun.apply(obj2);
    //    obj.sayName.apply(obj2);
    //    fun.call(obj,2,3);
       fun.aplly(obj,2,3);
       


    </script>
</head>
<body>
    
</body>
</html>